﻿/// <summary>
/// Script de controlador del layaut del site.
/// </summary>
/// <remarks>
/// Creacion: 	ITAB 01/05/2016
/// </remarks>
ns('Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.FormularioRegistro');
Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.FormularioRegistro.Controller = function () {
    var base = this;
    
    base.Ini = function () {
        'use strict'

        base.Control.ValFormularioRegistro = new Pe.GMD.UI.Web.Components.Validator({
            form: base.Control.FrmFormularioRegistro(),
            messages: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePagoResource,
            validationsExtra: base.Function.ObtenerValidacionesAdicionales()
        });

        base.Control.BtnBuscarOc().click(base.Event.BtnBuscarOcClick);
        base.Control.BtnCancelar().click(base.Event.BtnCancelarClick);
        base.Control.BtnGrabar().click(base.Event.BtnGrabarClick);
        base.Control.BtnAprobarRegistro().click(base.Event.BtnAprobarRegistroClick);
        //base.Control.BtnExportar().click(base.Event.BtnExportarClick);
        
        base.Control.FrmBusquedaOrdenCompra = new Pe.Petecos.Comercial.Presentacion.General.Comun.BusquedaOrdenCompraProveedor.Controller({
            AgregarSuccess: base.Event.AgregarSuccess
        });

        if (Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago != null) {
            base.Function.CargarComprobantePago(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago);
            base.Function.ConfigurarOpciones(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago);
        }
    };

    base.Parameters = {
        Cliente: null,
        OrdenCompra: {
            CodigoOrdenCompra: 0
        },
        ComprobantePago: {
            CodigoComprobantePago: 0
        }
    };

    base.Control = {
        ValFormularioRegistro: null,
        FrmBusquedaOrdenCompra: null,

        Mensaje: new Pe.GMD.UI.Web.Components.Message(),
        FrmFormularioRegistro: function () { return $('#frmFormularioRegistro'); },
        
        TxtCodigo: function () { return $('#txtFormularioRegistroCodigo'); },
        TxtNumeroOrdenCompra: function () { return $('#txtFormularioRegistroOrdenCompra'); },
        BtnBuscarOc: function () { return $('#btnBuscarOC'); },

        TxtCodigoProveedor: function () { return $('#hdnCodigoProveedor'); },
        TxtProveedor: function () { return $('#txtFormularioRegistroProveedor'); },
        TxtNumeroComprobante: function () { return $('#txtFormularioRegistroNumeroComprobante'); },

        SlcTipoComprobantePago: function () { return $('#slcFormularioRegistroTipoComprobantePago'); },
        SlcMoneda: function () { return $('#slcFormularioRegistroMoneda'); },
        SlcTipoPagoComprobante: function () { return $('#slcFormularioRegistroTipoPagoComprobante'); },

        RdAdelanto: function () { return $('#inlineRadio1'); },
        RdCuotas: function () { return $('#inlineRadio2'); },

        TxtNumeroCuotas: function () { return $('#txtFormularioRegistroNumeroCuotas'); },
        TxtCuotaActual: function () { return $('#txtFormularioRegistroCuotaActual'); },
        TxtMonto: function () { return $('#txtFormularioRegistroMonto'); },

        TxtFechaComprobantePago: function () { return $('#txtFormularioRegistroFechaPago'); },
        TxtFechaComprobanteProgramada: function () { return $('#txtFormularioRegistroFechaProgramada'); },
        TxtObservaciones: function () { return $('#txtFormularioRegistroObservaciones'); },

        BtnCancelar: function () { return $('#btnCancelarRegistro'); },
        BtnGrabar: function () { return $('#btnGrabarRegistro'); },
        BtnAprobarRegistro: function () { return $('#btnAprobarRegistro'); },
        //BtnExportar: function () { return $('#btnExportarRegistro'); },
    };

    //base.Parameters = {
    //    Cliente: null,
    //    ComprobantePago: {
    //        CodigoComprobantePago: 0
    //    }
    //};

    base.Event = {
        BtnBuscarOcClick: function () {
            base.Control.FrmBusquedaOrdenCompra.Show();
        },

        BtnCancelarClick: function () {
            'use strict'
            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Actions.Index;
        },
        BtnGrabarClick: function () {
            'use strict'

            if (base.Control.ValFormularioRegistro.isValid()) {
                base.Control.Mensaje.Confirmation({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.ConfirmacionGuardar,
                    onAccept: function () {
                            base.Ajax.AjaxGrabar.data = {
                                CodigoComprobantePago: base.Parameters.ComprobantePago.CodigoComprobantePago,
                                CodigoOrdenCompra: base.Control.TxtNumeroOrdenCompra().val(),
                                TipoComprobanteOrden: base.Control.SlcTipoComprobantePago().val(),
                                NumeroComprobanteApagar: base.Control.TxtNumeroComprobante().val(),
                                CodigoMoneda: base.Control.SlcMoneda().val(),
                                CodigoProveedor: base.Control.TxtCodigoProveedor().val(),
                                NombreProveedor: base.Control.TxtProveedor().val(),
                                AdelantoCuotas: base.Control.SlcTipoPagoComprobante().val() == 'A' ? 1 : 0,
                                NumeroCuotas: base.Control.TxtNumeroCuotas().val(),
                                NumeroCuotaActual: base.Control.TxtCuotaActual().val(),
                                MontoComprobante: base.Control.TxtMonto().val(),
                                FechaPago: base.Control.TxtFechaComprobantePago().val(),
                                FechaProgramada: base.Control.TxtFechaComprobanteProgramada().val(),
                                Observaciones: base.Control.TxtObservaciones().val(),
                            };
                            base.Ajax.AjaxGrabar.submit();
                        }
                });
            }
        },

        BtnAprobarRegistroClick: function () {
            'use strict'

            if (base.Parameters.ComprobantePago.CodigoComprobantePago > 0) {
                base.Control.Mensaje.Confirmation({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.ConfirmacionGuardar,
                    onAccept: function () {
                        base.Ajax.AjaxAprobar.data = {
                            codigos: [base.Parameters.ComprobantePago.CodigoComprobantePago]
                        };
                        base.Ajax.AjaxAprobar.submit();
                    }
                });
            }
        },

        AgregarSuccess: function (seleccionados) {
            $(seleccionados).each(function (index, seleccionado) {
                //base.Function.CrearRow(seleccionado);
                base.Parameters.OrdenCompra = seleccionado;
                base.Control.TxtCodigo().val(0);
                base.Control.TxtNumeroOrdenCompra().val(seleccionado.CodigoOrdenCompra);
                base.Control.TxtCodigoProveedor().val(seleccionado.CodigoProveedor);
                base.Control.TxtProveedor().val(seleccionado.NombreProveedor);
                base.Control.TxtNumeroComprobante().val("");
                base.Control.SlcMoneda().val(seleccionado.CodigoMoneda);
                base.Control.SlcTipoComprobantePago().val("");
                if (seleccionado.AdelantoPorPagarComprobante == 1) {
                    base.Control.SlcTipoPagoComprobante().val(Pe.Petecos.Comercial.Presentacion.Enumerados.TipoPagoComprobante.Adelanto);
                } else {
                    base.Control.SlcTipoPagoComprobante().val(Pe.Petecos.Comercial.Presentacion.Enumerados.TipoPagoComprobante.Cuotas);
                }
                base.Control.TxtNumeroCuotas().val(seleccionado.NumeroCuota);
                if (seleccionado.AdelantoPorPagarComprobante == 1) {
                    base.Control.TxtCuotaActual().val(0);
                } else {
                    base.Control.TxtCuotaActual().val(seleccionado.NroCuotaActualComprobante);
                }                
                base.Control.TxtMonto().val(seleccionado.MontoPorPagarComprobante);
                var hoy = new Date();
                var dia = hoy.getDate();
                if (dia < 10) dia = "0" + dia;
                var mes = hoy.getMonth() + 1;
                if (mes < 10) mes = "0" + mes;
                var anio = hoy.getFullYear();
                hoy = dia + "/" + mes + "/" + anio;
                base.Control.TxtFechaComprobantePago().val(hoy);
                base.Control.TxtFechaComprobanteProgramada().val(seleccionado.FechaCuotaAtualPorPagarComprobante);
                base.Control.TxtObservaciones().val("");
            });
        },

        AjaxGrabarSuccess: function (data) {
            'use strict'
            base.Control.Mensaje.Information({
                message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.SeGuardoInformacionExito
            });

            Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago = data.Result;

            if (Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago != null) {
                base.Function.CargarComprobantePago(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago);
                base.Function.ConfigurarOpciones(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Model.ComprobantePago);
            }

            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Actions.Index;
        },

        AjaxAprobarSuccess: function (data) {
            if (data.CodeResult == -1) {
                base.Control.Mensaje.Warning({
                    message: 'Usted no cuenta con permisos para realizar esta operación'
                });
            } else {
                base.Control.Mensaje.Information({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.SeGuardoInformacionExito
                });

                window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Actions.Index;
            }
        }
    };

    base.Ajax = {
        AjaxAprobar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Actions.Aprobar,
            autoSubmit: false,
            onSuccess: base.Event.AjaxAprobarSuccess
        }),

        AjaxGrabar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.Actions.Registrar,
            autoSubmit: false,
            onSuccess: base.Event.AjaxGrabarSuccess
        }),
    };

    base.Function = {
        ConfigurarOpciones: function (model) {
            if (model.CodigoComprobantePago > 0) {
                //base.Control.BtnExportar().show();
            }

            if (model.CodigoEstado == Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoComprobantePago.Registrado) {
                base.Control.BtnAprobarRegistro().show();
            }
        },

        OrdenarLista: function (lista, propiedad, ascendente) {
            return lista.sort(function (a, b) {
                if (ascendente) return (a[propiedad] > b[propiedad]);
                else return (b[propiedad] > a[propiedad]);
            });
        },

        CargarComprobantePago: function (evento) {
            base.Parameters.ComprobantePago = evento;
            
            base.Control.TxtCodigo().val(evento.CodigoComprobantePago);
            base.Control.TxtNumeroOrdenCompra().val(evento.CodigoOrdenCompra);
            
            base.Control.TxtProveedor().val(evento.NombreProveedor);
            base.Control.TxtNumeroComprobante().val(evento.NumeroComprobanteApagar);
            base.Control.SlcMoneda().val(evento.CodigoMoneda);
            base.Control.SlcTipoComprobantePago().val(evento.TipoComprobanteOrden);

            if(evento.AdelantoCuotas){
                base.Control.SlcTipoPagoComprobante().val(Pe.Petecos.Comercial.Presentacion.Enumerados.TipoPagoComprobante.Adelanto);
            }else{
                base.Control.SlcTipoPagoComprobante().val(Pe.Petecos.Comercial.Presentacion.Enumerados.TipoPagoComprobante.Cuotas);
            }
            
            base.Control.TxtNumeroCuotas().val(evento.NumeroCuotas);
            base.Control.TxtCuotaActual().val(evento.NumeroCuotaActual);
            base.Control.TxtMonto().val(evento.MontoComprobante);
            base.Control.TxtFechaComprobantePago().val(evento.FechaPago);
            base.Control.TxtFechaComprobanteProgramada().val(evento.FechaProgramada);
            base.Control.TxtObservaciones().val(evento.Observaciones);
        },

        ObtenerValidacionesAdicionales: function () {
            var validaciones = new Array();
            validaciones.push(
                    {
                        Event: function () {
                            var resultado = null;
                            if (base.Parameters.ComprobantePago.CodigoComprobantePago != null)
                                resultado = true;
                            else
                                resultado = (base.Parameters.OrdenCompra != null);
                            return resultado;
                        },
                        codeMessage: 'EtiquetaOrdenCompra'
                    }
                );
            return validaciones;
        },  
    };    
};


ns('Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.FormularioRegistro');
try {

    $(document).ready(function () {
        'use strict';
        Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.FormularioRegistro.Vista = new Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.FormularioRegistro.Controller();
        Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarComprobantePago.FormularioRegistro.Vista.Ini();
    });
} catch (ex) {
}